package com.starry.module.system.core.file.mapper;

import com.starry.core.common.domain.vo.PageVo;
import com.starry.db.core.mapper.BaseMapperX;
import com.starry.db.core.query.LambdaQueryWrapperX;
import com.starry.module.system.api.file.domain.qo.FileConfigPageQo;
import com.starry.module.system.core.file.entity.FileConfig;
import org.apache.ibatis.annotations.Mapper;

/**
 * 文件配置-数据库服务层
 * @author xiaoke
 */
@Mapper
public interface FileConfigMapper extends BaseMapperX<FileConfig> {

    /**
     * 分页查询
     *
     * @param pageQo 分页参数
     * @return PageVo<FileConfig>
     */
    default PageVo<FileConfig> selectPage(FileConfigPageQo pageQo) {
        return selectPage(pageQo, new LambdaQueryWrapperX<FileConfig>()
                .likeIfPresent(FileConfig::getName, pageQo.getName())
        );
    }

    default FileConfig selectByMaster() {
        return selectOne(new LambdaQueryWrapperX<FileConfig>()
                .eq(FileConfig::getMaster, 1)
                .last("limit 1")
        );
    }

    /**
     * 设置所有配置为非默认配置
     */
    void setConfigNotAllMaster();
}

